package com.sky.es.service;

import com.sky.es.api.request.CreateProductDocReuqest;
import com.sky.es.entity.ProductDoc;

import java.util.List;

/**
 * @author yangsk
 */
public interface ProductEsService {
    /**
     * 创建产品索引
     * @param reuqest
     */
    public void createProductDoc(CreateProductDocReuqest reuqest);

    /**
     * 根据商品文档id查询商品
     * @param id
     * @return
     */
    public ProductDoc findById(Long id);

    /**
     * 根据商品名称返回商品信息
     * @param name
     * @return
     */
    List<ProductDoc> findByName(String name);

    /**
     * term查询
     * @param type
     * @return
     */
    List<ProductDoc> getTermQueryByType(String type);

    /**
     * terms查询
     * @param onePrice
     * @param twoPrice
     * @return
     */
    List<ProductDoc> getTermsQueryByPrice(Long onePrice,Long twoPrice);

    /**
     * range查询
     * @param onwPrice
     * @param twoPrice
     * @return
     */
    List<ProductDoc> getRnageQueryByPrice(Long onwPrice, Long twoPrice);

    /**
     * es的match全文检索查询
     * @param name
     * @return
     */
    List<ProductDoc> getMatchQueryByName(String name);

    /**
     * 全文检索多字段匹配
     * @param condition
     * @return
     */
    List<ProductDoc> getMultiMatchQueryByConditioin(String condition);

    /**
     * 全文检索match_all查询
     * @return
     */
    List<ProductDoc> getMatchAllQuery();

    /**
     * 全文检索短语查询
     * @param condition
     * @return
     */
    List<ProductDoc> getMatchPhrase(String condition);

    /**
     * must查询
     * @param price
     * @return
     */
    List<ProductDoc> getMustByPrice(Long price);

}
